<?php
class TestMenuPublicoKakoon extends TestPojos
{
    public function testInstancia()
    {
        $instancia = new MenuPublicoKakoon($this->accesoBD);
        $control1  = ($instancia instanceof MenuPublicoKakoon);

        $this->assert($control1, "1. instancia");
    }

    public function testCrea()
    {
        $instancia = new MenuPublicoKakoon ($this->accesoBD);
        $instancia->setPropiedad ("titulo",       "el titulo");
        $instancia->setPropiedad ("url",          "la url");
        $instancia->setPropiedad ("posicion",     1);
        $instancia->setPropiedad ("inicio",       ConstantesKakoon::SI);

        $identificador = $instancia->consolida();
        $instancia     = null;
        $instancia     = new MenuPublicoKakoon($this->accesoBD, $identificador);

        $control1 = ($instancia->getIdentificador() > 0);
        $control2 = ("el titulo" == $instancia->getPropiedad ("titulo"));
        $control3 = ("la url" == $instancia->getPropiedad("url"));
        $control4 = ($instancia->getPropiedad("posicion") == 1);
        $control5 = ($instancia->esInicio());

        $instancia->purga();

        $this->assert ($control1, "1. crea");
        $this->assert ($control2, "2. crea");
        $this->assert ($control3, "3. crea");
        $this->assert ($control4, "4. crea");
        $this->assert ($control5, "5. crea");
    }

    public function testRegistraPosicion()
    {
        $instancia1 = new MenuPublicoKakoon ($this->accesoBD);
        $instancia1->setPropiedad ("titulo",       "el titulo");
        $instancia1->setPropiedad ("url",          "la url");
        $instancia1->setPropiedad ("posicion",     1);
        $instancia1->setPropiedad ("inicio",        ConstantesKakoon::SI);
        $instancia1->registraPosicion();
        $identificador1 = $instancia1->consolida();

        $instancia2 = new MenuPublicoKakoon ($this->accesoBD);
        $instancia2->setPropiedad ("titulo",       "otro titulo");
        $instancia2->setPropiedad ("url",          "otra url");
        $instancia2->setPropiedad ("posicion",     1);
        $instancia2->setPropiedad ("inicio",        ConstantesKakoon::SI);
        $instancia2->registraPosicion();
        $identificador2 = $instancia2->consolida();

        $instancia1 = null;
        $instancia2 = null;
        $instancia1 = new MenuPublicoKakoon($this->accesoBD, $identificador1);
        $instancia2 = new MenuPublicoKakoon($this->accesoBD, $identificador2);

        $control1 = ($instancia1->getIdentificador() == $identificador1);
        $control2 = ($instancia2->getIdentificador() == $identificador2);
        $control3 = ($instancia1->getPropiedad("posicion") == 1);
        $control4 = ($instancia2->getPropiedad("posicion") == 2);

        $instancia1->purga();

        $instancia3 = new MenuPublicoKakoon ($this->accesoBD);
        $instancia3->setPropiedad ("titulo",       "mas titulo");
        $instancia3->setPropiedad ("url",          "mas url");
        $instancia3->setPropiedad ("posicion",     1);
        $instancia3->setPropiedad ("inicio",        ConstantesKakoon::SI);
        $instancia3->registraPosicion();

        $control5 = ($instancia3->getPropiedad("posicion") == 3);

        $instancia2->purga();
        $instancia3->purga();

        $this->assert ($control1, "1. registraPosicion");
        $this->assert ($control2, "2. registraPosicion");
        $this->assert ($control3, "3. registraPosicion");
        $this->assert ($control4, "4. registraPosicion");
        $this->assert ($control5, "5. registraPosicion");
    }

    public function testPosicionamiento()
    {
        $instancia1 = new MenuPublicoKakoon ($this->accesoBD);
        $instancia1->setPropiedad ("titulo",       "el titulo");
        $instancia1->setPropiedad ("url",          "la url");
        $instancia1->setPropiedad ("posicion",     1);
        $instancia1->setPropiedad ("inicio",       ConstantesKakoon::SI);
        $instancia1->registraPosicion();
        $identificador1 = $instancia1->consolida();

        $instancia2 = new MenuPublicoKakoon ($this->accesoBD);
        $instancia2->setPropiedad ("titulo",       "otro titulo");
        $instancia2->setPropiedad ("url",          "otra url");
        $instancia2->setPropiedad ("posicion",     1);
        $instancia2->setPropiedad ("inicio",       ConstantesKakoon::SI);
        $instancia2->registraPosicion();
        $identificador2 = $instancia2->consolida();

        $instancia3 = new MenuPublicoKakoon ($this->accesoBD);
        $instancia3->setPropiedad ("titulo",       "mas titulo");
        $instancia3->setPropiedad ("url",          "mas url");
        $instancia3->setPropiedad ("posicion",     1);
        $instancia3->setPropiedad ("inicio",       ConstantesKakoon::SI);
        $instancia3->registraPosicion();
        $identificador3 = $instancia3->consolida();

        $instancia1 = null;
        $instancia2 = null;
        $instancia3 = null;
        $instancia1 = new MenuPublicoKakoon($this->accesoBD, $identificador1);
        $instancia2 = new MenuPublicoKakoon($this->accesoBD, $identificador2);
        $instancia3 = new MenuPublicoKakoon($this->accesoBD, $identificador3);

        $control1 = ($instancia1->getIdentificador() == $identificador1);
        $control2 = ($instancia2->getIdentificador() == $identificador2);
        $control3 = ($instancia3->getIdentificador() == $identificador3);
        $control4 = ($instancia1->getPropiedad("posicion") == 1);
        $control5 = ($instancia2->getPropiedad("posicion") == 2);
        $control6 = ($instancia3->getPropiedad("posicion") == 3);

        $instancia1->sube();
        $instancia2 = null;
        $instancia2 = new MenuPublicoKakoon($this->accesoBD, $identificador2);

        $control7 = ($instancia1->getPropiedad("posicion") == 2);
        $control8 = ($instancia2->getPropiedad("posicion") == 1);

        $instancia3->baja();
        $instancia1 = null;
        $instancia1 = new MenuPublicoKakoon($this->accesoBD, $identificador1);

        $control9  = ($instancia3->getPropiedad("posicion") == 2);
        $control10 = ($instancia1->getPropiedad("posicion") == 3);

        $instancia2->sube();
        $instancia3 = null;
        $instancia3 = new MenuPublicoKakoon($this->accesoBD, $identificador3);

        $control11 = ($instancia3->getPropiedad("posicion") == 1);
        $control12 = ($instancia2->getPropiedad("posicion") == 2);

        $this->assert ($control1,  "1. posicionamiento");
        $this->assert ($control2,  "2. posicionamiento");
        $this->assert ($control3,  "3. posicionamiento");
        $this->assert ($control4,  "4. posicionamiento");
        $this->assert ($control5,  "5. posicionamiento");
        $this->assert ($control6,  "6. posicionamiento");
        $this->assert ($control7,  "7. posicionamiento");
        $this->assert ($control8,  "8. posicionamiento");
        $this->assert ($control9,  "9. posicionamiento");
        $this->assert ($control10, "10. posicionamiento");
        $this->assert ($control11, "11. posicionamiento");
        $this->assert ($control12, "12. posicionamiento");

        $instancia1->purga();
        $instancia2->purga();
        $instancia3->purga();
    }

    public function setUp()
    {
        $instancia = new MenuPublicoKakoon ($this->accesoBD);
        $instancia->borraTabla();
        $instancia->creaTabla();
    }
}
?>